#ifndef WEBAPI_AMAP_WEATHER_H
#define WEBAPI_AMAP_WEATHER_H

#include "webapi_amap_base.h"

namespace webapi {

struct AmapRealtimeWeather : AmapResponseBase {
  int adcode;
  String city;
  String province;
  String reporttime;
  String weather;        // 天气现象（汉字描述）
  String temperature;    // 实时气温，单位：摄氏度
  String humidity;       // 空气湿度
  String winddirection;  // 风向描述
  String windpower;      // 风力级别，单位：级
};

struct AmapForecastWeather : AmapResponseBase {
  static constexpr int kDays = 4;
  int adcode;
  String city;
  String province;
  String reporttime;
  struct ForecastWeather {
    String date;          // 日期
    String week;          // 星期
    String dayweather;    // 白天天气现象
    String nightweather;  // 夜间天气现象
    String daytemp;       // 白天温度
    String nighttemp;     // 夜间温度
    String daywind;       // 白天风向
    String nightwind;     // 夜间风向
    String daypower;      // 白天风力
    String nightpower;    // 夜间风力
  };
  int count;  // 结果数目
  ForecastWeather casts[kDays];
};

class AmapWeatherService : public AmapWebServiceBase {
 public:
  /// @brief 查询实时天气
  /// @param response 实时天气
  /// @param adcode 地区代码
  /// @return true 查询成功
  bool QueryRealtimeWeather(AmapRealtimeWeather& response, int adcode);

  /// @brief 查询预报天气
  /// @param response 预报天气
  /// @param adcode 地区代码
  /// @return true 查询成功
  bool QueryForecastWeather(AmapForecastWeather& response, int adcode);
};

}  // namespace webapi

#endif  // WEBAPI_AMAP_WEATHER_H